style.scss 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. .goal-widget {
  2. width: 100%;
  3. padding: 16px;
  4. font-family: 'Pretendard', sans-serif;
  5. }
  6. .goal-widget--loading {
  7. color: #666;
  8. text-align: center;
  9. }
  10. .goal-title {
  11. text-align: center;
  12. margin-bottom: 12px;
  13. text-shadow: 1px 1px 3px rgba(0, 0, 0, 0.4);
  14. font-size: var(--goal-title-font-size);
  15. color: var(--goal-title-color);
  16. font-weight: 700;
  17. }
  18. .goal-bar-wrapper {
  19. position: relative;
  20. width: 100%;
  21. border-radius: 8px;
  22. overflow: hidden;
  23. height: var(--goal-bar-height);
  24. min-height: 24px;
  25. }
  26. .goal-bar-bg {
  27. width: 100%;
  28. height: 100%;
  29. border-radius: 8px;
  30. background-color: var(--goal-bar-bg-color);
  31. }
  32. .goal-bar-fill {
  33. height: 100%;
  34. border-radius: 8px;
  35. width: var(--goal-bar-fill-width, 0%);
  36. transition: width 0.8s cubic-bezier(0.4, 0, 0.2, 1);
  37. position: relative;
  38. background-color: var(--goal-bar-color);
  39. &::after {
  40. content: '';
  41. position: absolute;
  42. top: 0;
  43. left: 0;
  44. right: 0;
  45. bottom: 0;
  46. background: linear-gradient(90deg, transparent 0%, rgba(255, 255, 255, 0.2) 50%, transparent 100%);
  47. animation: shimmer 2s infinite;
  48. }
  49. }
  50. .goal-bar-text {
  51. position: absolute;
  52. inset: 0;
  53. display: flex;
  54. align-items: center;
  55. justify-content: center;
  56. z-index: 1;
  57. font-size: var(--goal-amount-font-size);
  58. color: var(--goal-amount-color);
  59. font-weight: 600;
  60. white-space: nowrap;
  61. text-shadow: 0 1px 3px rgba(0, 0, 0, 0.7), 0 0 2px rgba(0, 0, 0, 0.5);
  62. pointer-events: none;
  63. }
  64. @keyframes shimmer {
  65. 0% { transform: translateX(-100%); }
  66. 100% { transform: translateX(100%); }
  67. }